package com.facade;

import java.io.Serializable;
import java.util.List;

import javax.persistence.EntityManager;

import com.dao.ConstrutoraDAO;
import com.dao.HistoricoDAO;
import com.model.Construtora;
import com.model.Historico;

public class ConstrutoraFacade implements Serializable {
	
	private static final long serialVersionUID = 8283015357380776134L;
	
	private ConstrutoraDAO dao = new ConstrutoraDAO();
	private HistoricoDAO historicoDAO = new HistoricoDAO();

	public void salvarConstrutora(Construtora construtora) {
		dao.beginTransaction();
		dao.save(construtora);
		dao.commitAndCloseTransaction();
		
	}

	public void atualizarConstrutora(Construtora construtora) {
		dao.beginTransaction();
		dao.update(construtora);
		dao.commitAndCloseTransaction();
	}
	
	public void apagarConstrutora(Construtora construtora) {
		dao.beginTransaction();
		Construtora construtoraParaApagar = dao.findReferenceOnly(construtora.getId());
		List<Historico> listaDeHistoricoParaApagar = dao.apagarHistoricosDaConstrutora(construtoraParaApagar);
		for(Historico h: listaDeHistoricoParaApagar){
			Historico historico = h;
			EntityManager em = historicoDAO.getEntityManager();
			em.getTransaction().begin();
			em.remove(em.merge(historico));
			em.getTransaction().commit();
			em.close();
		}
		dao.delete(construtoraParaApagar);
		dao.commitAndCloseTransaction();	
	}
	
	public List<Construtora> listarConstrutoras() {
		dao.beginTransaction();
		//List<Construtora> result = dao.findAll();
		List<Construtora> result = dao.listConstrutoraOrdenado();
		dao.closeTransaction();
		return result;
	}

	public void gerarPdfConstrutora(Construtora construtora) {
		// TODO Auto-generated method stub
	}

	public void filtrarConstrutora(Construtora construtora) {
		// TODO Auto-generated method stub
		
	}

}
